<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
  //实现：setObjectValue(obj: object, keys: string[], value: any) 方法， 支持安全设置对象的值
      /**
       * 设置嵌套对象属性值
       * 根据给定的属性路径数组，递归创建或修改对象的嵌套属性结构，并在路径末端设置值
       * @param {Object} obj - 目标对象，如果为null/undefined则返回null
       * @param {Array} keys - 属性路径数组，空数组时直接返回原对象
       * @param {*} value - 需要设置的属性值
       * @returns {Object|null} - 修改后的对象，或输入无效时返回null
       */
      function setObjectValue(obj,keys,value){
          // 处理无效输入对象
          if (!obj){
              return null
          }

          // 空路径直接返回原对象
          if (keys && keys.length === 0){
              return obj
          }

          // 使用临时变量遍历嵌套对象
          let temp = obj

          // 遍历属性路径数组
          for(let i = 0;i < keys.length;i++){
              const key = keys[i]

              // 到达路径末端则设置值
              if (i === keys.length - 1){
                  temp[key] = value
              }
              // 路径中途处理嵌套结构
              else {
                  // 当前路径不存在时创建空对象
                  if (!temp[key]){
                      temp[key] = {}
                  }
                  // 进入下一层对象
                  temp = temp[key]
              }
          }

          return obj
      }
  let obj = {a:{},d:{}}
  setObjectValue(obj, ['a', 'b', 'c'], 42);
  console.log(obj); // 输出: { a: { b: { c: 42 } } }
</script>
</html>